<?php
/**
 *  用户控制器
 */
namespace app\admin\controller;
use app\admin\model\User as UserModel;
use app\admin\model\Role as RoleModel;

class User extends Common
{

    private $model;
	private $PageCount;

	public function _initialize()
	{
		parent::_initialize();
        $this->model = new UserModel();
		$this->PageCount=20;
    }

    // 用户列表
    public function index()
    {
		$UrlParam=input();
		$UrlParam['keyword']=input('keyword/s');
        if ($keyword = $UrlParam['keyword']) {
            $result = $this->model->findUser($UrlParam);
        } else {
            $result = $this->model->getList();
        }
		
        $this->assign('users', $result);
		$this->assign('UrlParam', $UrlParam);
        // 角色列表
        $role_model = new RoleModel();
        $this->assign('roles', $role_model->getSelect());
        return $this->fetch();
    }

    // 用户新增
    public function add()
    {
        if($this->request->isPost()){
            // 获取数据
            $ucode = get_auto_code($this->model->getLastCode());
            $username = input('username/s');
            $realname = input('realname/s');
            $password = input('password/s');
            $rpassword = input('rpassword/s');
            $status = input('status/d');
            $roles = input('roles/s'); // 用户角色
            if (! $ucode) {
                alert('编码不能为空！','back');
            }
            if (! $username) {
                alert('用户名不能为空！','back');
            }
            if (! $realname) {
                alert('真实名字不能为空！','back');
            }
            if (! $password) {
                alert('密码不能为空！','back');
            }
            if (! $rpassword) {
                alert('确认密码不能为空！','back');
            }
            if ($password != $rpassword) {
                alert('确认密码不正确！','back');
            }
            
            if (! preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.@]+$/u', $username)) {
                alert('用户名含有不允许的特殊字符！','back');
            }
            
            // 检查编码重复
            if ($this->model->checkUser("ucode='$ucode'")) {
                alert('该用户编号已经存在，不能再使用！','back');
            }
            
            // 检查用户名重复
            if ($this->model->checkUser("username='$username'")) {
                alert('该用户名已经存在，不能再使用！','back');
            }
            
            // 构建数据
            $data = array(
                'ucode' => $ucode,
                'username' => $username,
                'realname' => $realname,
                'password' => encrypt_string($password),
                'status' => $status,
                'login_count' => 0,
                'last_login_ip' => 0,
                'create_user' => session('username'),
                'update_user' => session('username'),
                'create_time' => get_datetime(),
                'update_time' => '0000-00-00 00:00:00'
            );
            
            // 执行添加
            if ($this->model->addUser($data,$roles)) {				
				$this->success('新增成功！', url('/User/index'));
            } else {
                $this->error('新增失败');
            }
        } else {
            $this->assign('add', true);            
            // 角色列表
            $role_model = new RoleModel();
            $this->assign('roles', $role_model->getSelect());
			return $this->fetch('index');
        }
    }

    // 用户删除
    public function del()
    {
        if (! $ucode = input('id/s')) {
            $this->error('传递的参数值错误！');
        }
        
        if ($ucode == 'cb20001') {
            $this->error('内置管理员不允许删除！');
        }
        
        if ($this->model->delUser($ucode)) {
            $this->success('删除成功！');
        } else {
            $this->error('删除失败');
        }
    }

    // 用户修改
    public function mod()
    {
		$UrlParam=input();
        if (! $ucode = input('id/s')) {
            $this->error('传递的参数值错误！');
        }
        if ($ucode == 'cb20001') {
            $this->error('内置管理员不允许此操作！');
        }        
        // 单独修改状态
        if (($field = input('field')) && ! is_null($value = input('value/d'))) {
			$info[$field]=$value;
			$info['update_user']= session('username');
            if ($this->model->modUser($ucode, $info)) {
                location(-1);
            } else {
                alert('修改失败！','back');
            }
        }
        
        // 修改操作
         if($this->request->isPost()){
            // 获取数据
            $username = input('username/s');
            $realname = input('realname/s');
            $password = input('password/s');
            $rpassword = input('rpassword/s');
            $status = input('status/d');
            $roles = input('roles/s'); // 用户角色
            
            if (! $username) {
                alert('用户名不能为空！','back');
            }
            if (! $realname) {
                alert('真实名字不能为空！','back');
            }
            
            if (! preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.@]+$/u', $username)) {
                alert('用户名含有不允许的特殊字符！','back');
            }
            
            // 检查用户名重复
			$where=array();

			$where['username']=$username;
			$where['ucode']=$ucode;
            if ($this->model->checkUser($where)) {
                alert('该用户名已经存在，不能再使用！','back');
            }            
            // 构建数据
            $data = array(
                'username' => $username,
                'realname' => $realname,
                'status' => $status,
                'update_user' => session('username'),
				'update_time' => get_datetime()
            );
            
            if ($password) {
                if (! $rpassword) {
                    alert('确认密码不能为空！','back');
                }
                if ($password != $rpassword) {
                    alert('确认密码不正确！','back');
                }
                $data['password'] = encrypt_string($password);
            }
            
            // 执行添加
            if ($this->model->modUser($ucode, $data, $roles)) {
                $this->success('修改成功！', url('/User/index'));
            } else {
                location(- 1);
            }
        } else { // 调取修改内容            
            $result = $this->model->getUser($ucode);
            if (! $result) {
                $this->error('编辑的内容已经不存在！');
            }
            $this->assign('user', $result);            
            // 角色列表
             $role_model = new RoleModel();
            $this->assign('roles', $role_model->getSelect());
			$this->assign('UrlParam', $UrlParam);
			return $this->fetch('mod');
        }
    }
}